/**
 * date: 2018年2月28日
 * 重复异步协作 for http://eventproxy.html5ify.com/
 * 
 */

/**
 * `after`方法适合重复的操作，比如读取10个文件，调用5次数据库等。
 * 将handler注册到N次相同事件的触发上。达到指定的触发数，handler将会被调用执行，
 * 每次触发的数据，将会按触发顺序，存为"数组"作为参数传入。
 * 
 * 1) 使用`after`时,需要传递一个调用次数,比如此例中的`TIMES`
 * 2) 注意`list`是一个数组
 * 
 */
var func01 = (function(){
    var ep = new EventProxy();

    var arr = [];
    var TIMES = 5;
    var innerFunc = function(){
        ep.after('demoPush', TIMES, function(list){
            console.log( list.join('\n') );
            console.log( arr.join(', ') );
        });
        for (var i = 0; i < TIMES; i++){
            demoPush((i + 1) + '_push_');
        }
    };
    function demoPush(strPrefix){
        var strPrefix = strPrefix || '';
        for(var i=0;i<5;i++){
            arr.push( strPrefix + (i+1) );
        }
        setTimeout(function(){
            ep.emit('demoPush', strPrefix + ' done...');
        }, 10);
    }

    return innerFunc;
})();

func01();

